package com.yxw.live_vod_boot.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yxw.live_vod_boot.dto.OrderQueryDTO;
import com.yxw.live_vod_boot.dto.ShopOrderListQueryDTO;
import com.yxw.live_vod_boot.dto.VerifyOrderCouponNumDTO;
import com.yxw.live_vod_boot.dto.UserOrderQueryDTO;
import com.yxw.live_vod_boot.entity.YxOrderEntity;
import com.yxw.live_vod_boot.vo.OrderVO;
import com.yxw.live_vod_boot.vo.ShopOrderListVO;
import com.yxw.live_vod_facade.vo.VodSalesRevenueVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author Administrator
 * @date 2023-12-08
 */
@Repository
public interface OrderMapper extends BaseMapper<YxOrderEntity> {

    /**
     * 获取店铺侧订单列表
     *
     * @param page
     * @param dto
     * @return
     */
    List<ShopOrderListVO> getOrderListByShopId(Page<ShopOrderListVO> page, @Param("dto") ShopOrderListQueryDTO dto);

    /**
     * 后台获取订单列表
     *
     * @param page
     * @param dto
     * @return
     */
    List<OrderVO> getOrderList(Page<OrderVO> page, @Param("dto") OrderQueryDTO dto);

    /**
     * 获取用户侧订单列表
     *
     * @param page
     * @param dto
     * @return
     */
    List<OrderVO> getOrderListByUserId(Page<OrderVO> page, @Param("dto") UserOrderQueryDTO dto);

    /**
     * 核销订单券码
     *
     * @param dto
     */
    void insertVerifyOrderCouponNumLog(@Param("dto") VerifyOrderCouponNumDTO dto, @Param("orderId") Long orderId);

    /**
     * 获取未支付订单列表
     *
     * @return
     */
    List<OrderVO> getOrderListByUnpaid();

    /**
     * 校验当前查询的是不是自己的店铺
     *
     * @param userId
     * @param shopId
     * @return
     */
    Integer checkShopAdmin(@Param("userId") Long userId, @Param("shopId") Long shopId);

    /**
     * 查询点播成交订单信息
     *
     * @param videoId
     * @return
     */
    VodSalesRevenueVo getVodOrderByVideoId(@Param("videoId") Long videoId);
    /**
     * 查询用户有过订单的店铺
     * @param userId
     * @return
     */    
    List<Long> getShopIdsByUserId(@Param("userId") Long userId);    
}
